When transmitting data from one device to another, it is common for a large stream of data to be broken up into smaller packets of data in order to facilitate transmission. Breaking a large data stream into smaller packets facilitates retransmission and recovery should elements of the data stream become lost or corrupted. Breaking a large data stream into smaller packets may be completed using either hardware or software approaches.
The current segmentation approaches tend to identify the possible packet types and then select a single packet that encompasses the entire data stream. This requires either utilizing a small packet or avoiding transmission if available time does not accommodate the packet.